/*
* leetncode 92
* 反转指定区间内的链表
* 穿针引线法
* */
class Main {
    public ListNode reverseBetween(ListNode head, int left, int right) {
        ListNode dummyNode=new ListNode(-1);
        dummyNode.next=head;
        ListNode pre=dummyNode;
        for(int i=0;i<left-1;i++){
            pre=pre.next;
        }
        ListNode lnode=pre.next;
        ListNode p;
        for(int i=0;i<right-left;i++){
            p=lnode.next;
            lnode.next=p.next;
            p.next=pre.next;
            pre.next=p;
        }
        return dummyNode.next;
    }
}

